package com.example.aiquestions.service;

import com.example.aiquestions.entity.Question;
import com.example.aiquestions.model.dto.QuestionDetail;
import com.example.aiquestions.model.dto.QuestionResponse.QuestionData;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface QuestionService {
    /**
     * 保存题目到数据库
     * @param questions 题目数据列表
     * @return 保存的题目ID列表
     */
    List<Long> saveQuestions(List<QuestionData> questions);

    /**
     * 根据ID获取题目的完整信息
     * @param id 题目ID
     * @return 题目数据
     */
    QuestionDetail getQuestionById(Long id);

    /**
     * 根据ID列表批量获取题目的完整信息
     * @param ids 题目ID列表
     * @return 题目数据列表
     */
    List<QuestionDetail>  getQuestionsByIds(List<Long> ids);

    /**
     * 根据ID删除题目及其相关数据
     * 如果是阅读理解题，会同时删除其子题目
     * 会删除题目的选项、答案、标签、知识点等所有相关数据
     * 
     * @param id 题目ID
     * @return 是否删除成功
     * @throws IllegalArgumentException 当题目ID不存在时抛出
     */
    boolean deleteQuestionById(Long id);

    /**
     * 更新题目信息
     * 支持更新题目的基本信息、选项、答案、标签、知识点等
     * 如果是阅读理解题，也支持更新子题目
     * 
     * @param id 题目ID
     * @param questionData 更新后的题目数据
     * @return 更新后的题目完整信息
     * @throws IllegalArgumentException 当题目ID不存在时抛出
     */
    QuestionDetail updateQuestion(Long id, QuestionData questionData);
} 